# 1、operator.itemgetter函数
# operator模块提供的itemgetter函数用于获取对象的哪些维的数据，参数为一些序号（即需要获取的数据在对象中的序号），下面看例子。
#
# In [1]:
# import operator
# a = [1,2,3]
# b=operator.itemgetter(1) #定义函数b，获取对象的第1个域的值
# print(b(a))
# 2
# In [2]:
# b=operator.itemgetter(1,0) #定义函数b，获取对象的第1个域和第0个的值
# print(b(a))
# (2, 1)
# In [9]:
# b=operator.itemgetter(2,1) #定义函数b，获取对象的第2个域和第1个的值
# print(b(a))
# (3, 2)
# 要注意，operator.itemgetter函数获取的不是值，而是定义了一个函数，通过该函数作用到对象上才能获取值。
from operator import itemgetter
data = [
    {'age': 31, 'city': 'taipei', 'name': 'amy'},
    {'age': 71, 'city': 'tokyo', 'name': 'john'},
    {'age': 16, 'city': 'london', 'name': 'zoe'},
    {'age': 16, 'city': 'rio', 'name': 'cathy'},
    {'age': 48, 'city': 'frankfurt', 'name': 'david'}]
print(sorted(data, key=itemgetter('age')))
#定义函数getfun，获取对象的第0个域的值
getfun=itemgetter(0)
print(getfun(data))
#定义函数getfun，获取对象的第0个域的值
getfun=itemgetter(1)
print(getfun(data))
getfun=itemgetter(1,0)
print(getfun(data))
#定义函数getfun,获取第一个域的第0个值
get=itemgetter(1,2,3)
print(get(data))

get=itemgetter("age")
print(get)

print(sorted(data, key=itemgetter('age')))




